#include <stdio.h>
#include <stdlib.h>

typedef int ElemType;

typedef struct LNode {
    ElemType data;
    struct LNode *next;
} *LinkList;

int Search_k(LinkList list, int k)
{
    LinkList p = list->next, q = list->next;
    int count = 0;

    while(p != NULL)
    {
        if(count < k)
        {
            count ++;
        }
        else
        {
            printf("(q正在遍历%d)", q->data);
            q = q->next;
        }
        printf("p正在遍历 %d ... ", p->data);
        p = p->next;
    }
    printf("(q正在遍历%d)", q->data);
    if( count < k)
    {
        return 0;
    }
    else
    {
        printf("\n倒数第%d个元素为 [%d]",k, q->data);
        return 1;
    }

}

LinkList  Init_list()
{
    LinkList  L = (LinkList)malloc(sizeof(LNode)); // 分配一个头节点
    L->next = NULL;

    printf("头->");

    int n = 6;
    LNode * p = L;
    while(n)
    {
        LNode * neww = (LNode *)malloc(sizeof(LNode));
        neww->data = n;
        neww->next = NULL;

        p->next = neww;
        p = p->next;
        printf("%d->", n);
        n--;
    }
    printf("\n");
    return L;

}


int main()
{
    LinkList list = Init_list();
    int k;
    printf("输入要查找倒数第几个数(k<6):");
    scanf("%d", &k);
    Search_k(list, k);

    return 0;
}
